using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;

public class UI组件_选择框 : MonoBehaviour
{
    public string 标题;
    public Text 标题text;
    public Text 显示;

    public List<string> 内容 = new List<string>();
    private int 当前选择 = 0;

    public Button R;
    private Image R_Color;
    public Button L;
    private Image L_Color;

    private UnityAction<string> 当值改变时;

    public void 初始化(List<string> 内容,UnityAction<string> 当值改变时 = null)
    {
        if(当值改变时!=null)
            this.当值改变时 = 当值改变时;

        this.内容 = 内容;
        if (内容.Count >= 1)
            显示.text = 内容[0];

        当值改变时?.Invoke(显示.text);
        当前选择 = 0;
    }

    public string value => 显示.text;
    public int index => 当前选择;
    public void 添加内容(string 字符)
    {
        内容.Add(字符);
    }
    public string 移除内容(int 序号)
    {
        if (内容.Count <= 序号)
            return null;
        return 内容[序号];
    }

    private void OnValidate()
    {
        标题text.text = 标题;
    }

    private void Awake()
    {
        R.onClick.AddListener(增加);
        L.onClick.AddListener(减少);
        R_Color = R.GetComponent<Image>();
        L_Color = L.GetComponent<Image>();
        默认色 = R_Color.color;
        浅色 = 默认色 + new Color(0.2f, 0.2f, 0.2f,0);
        if (内容.Count >= 1)
            显示.text = 内容[0];
    }

    private Color 浅色;
    private Color 默认色;

    private void 增加()
    {
        if (当前选择+1 >= 内容.Count)
            return;

        当前选择++;
        显示.text = 内容[当前选择];
        L_Color.color = 默认色;

        if (当前选择+1 >= 内容.Count)
        {
            L_Color.color = 默认色;
            R_Color.color = 浅色;
        }

        当值改变时?.Invoke(内容[当前选择]);
    }
    private void 减少()
    {
        if (当前选择 == 0)
            return;

        当前选择--;
        显示.text = 内容[当前选择];
        R_Color.color = 默认色;

        if (当前选择 == 0)
        {
            L_Color.color = 浅色;
            R_Color.color = 默认色;
        }

        当值改变时?.Invoke(内容[当前选择]);
    }


}
